package cn.com.blueInfo.bpm.number.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import cn.com.blueInfo.bpm.number.enums.NumberRuleDefaultFlag;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 编号规则定义表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:39:05
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "编号规则定义 接收参数及校验")
public class NumberRuleDTO extends BaseDTO {

    /** 规则编码（租户内唯一） */
    @NotBlank(message = "规则编码 不能为空")
    @Schema(description = "规则编码（租户内唯一）")
    private String ruleCode;
    /** 规则名称 */
    @NotBlank(message = "规则名称 不能为空")
    @Schema(description = "规则名称")
    private String ruleName;
    /** 适用业务类型 */
    @Schema(description = "适用业务类型")
    private String bizType;
    /** 规则描述 */
    @Schema(description = "规则描述")
    private String description;
    /** 默认规则：1-是，0-否 */
    @NotNull(message = "默认规则 不能为空")
    @Schema(description = "默认规则：1-是，0-否")
    private NumberRuleDefaultFlag defaultFlag;

    /**
     * 编号规则定义 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "编号规则定义 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 规则编码（租户内唯一） */
        @Schema(description = "规则编码（租户内唯一）")
        private String ruleCode;
        /** 规则名称 */
        @Schema(description = "规则名称")
        private String ruleName;
        /** 适用业务类型 */
        @Schema(description = "适用业务类型")
        private String bizType;
        /** 规则描述 */
        @Schema(description = "规则描述")
        private String description;
        /** 默认规则：1-是，0-否 */
        @Schema(description = "默认规则：1-是，0-否")
        private NumberRuleDefaultFlag defaultFlag;

    }

    /**
     * 编号规则定义 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "编号规则定义 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {

        /** 适用业务类型 */
        @Schema(description = "适用业务类型")
        private String bizType;
        /** 规则描述 */
        @Schema(description = "规则描述")
        private String description;

    }

}